
// 一个Java源文件可以包含多个类的定义，但只能定义一个public类，
// 且public类名必须与文件名一致。
// 如果要定义多个public类，必须拆到多个Java源文件中。

class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void printfName() {
        // 如果没有命名冲突，可以省略this
        System.out.println("name is " + name);
    }

    public void setName(String name) {
        if (name == null || name.isBlank()) {
            throw new IllegalArgumentException("invalid name");
        }
        this.name = name.strip(); // 去掉首尾空格
    }

    // 可变参数
    public void variable_params(String... args) {
        for (String s : args) {
            System.out.println(s);
        }
    }

}

public class Test {
    public static void main(String[] args) {
        Person p1 = new Person("Alice", 30);
        System.err.println(p1.name + ", age " + p1.age);
        p1.printfName();
        p1.setName(" Bob ");
        p1.printfName();

        p1.variable_params("a", "b", "c");
    }
}